using System;

namespace LF.Shared.Dtos.Input
{
    /// <summary>
    /// 用户可用性查询输入DTO
    /// 用于查询指定时间段内用户的可用性状态
    /// </summary>
    public class UserAvailabilityInput
    {
        /// <summary>
        /// 任务开始时间
        /// 用于检查用户在此时间段内是否有其他工单冲突
        /// </summary>
        public DateTime? StartTime { get; set; }

        /// <summary>
        /// 任务结束时间
        /// 用于检查用户在此时间段内是否有其他工单冲突
        /// </summary>
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 是否只返回有地址坐标的用户
        /// 默认false，返回所有用户
        /// </summary>
        public bool OnlyWithLocation { get; set; } = false;

        /// <summary>
        /// 是否只返回可用的用户
        /// 默认false，返回所有用户及其状态
        /// </summary>
        public bool OnlyAvailable { get; set; } = false;

        /// <summary>
        /// 部门筛选
        /// 可选，按部门筛选用户
        /// </summary>
        public string? DepartmentFilter { get; set; }

        /// <summary>
        /// 关键词搜索
        /// 可选，按姓名或用户名搜索
        /// </summary>
        public string? SearchKeyword { get; set; }

        /// <summary>
        /// 排除的工单ID
        /// 用于排除当前正在派单的工单本身，避免与自身冲突
        /// </summary>
        public Guid? ExcludeWorkOrderId { get; set; }
    }
}
